import { reqAddOrUpdateShopCart, reqShopCartList, reqUpdateOneIsChecked, reqUpdateAllIsChecked, reqDeleteOneShopCart, reqDeleteAllShopCart } from "@/api"

const state = {
  shopCartList: []
}
const mutations = {
  RECEIVE_SHOPCARTLIST(state, shopCartList) {
    state.shopCartList = shopCartList
  }
}
const actions = {

  // async函数  异步函数  函数内部一定有异步操作
  // async函数返回值一定是promise对象，不看return
  // promise对象是有状态和结果的，这个promise是成功还是失败 要看return

  // return的值： promise对象   非promise对象
  // 如果return后面是一个非promise的值  
  // 1、返回正常值  那就代表async函数返回的promise是成功的，成功的结果就是return返回的值
  // 2、抛异常  throw new Error('失败') 代表async函数返回的promise是失败的，失败的原因就是你抛出的失败原因

  // 如果return后面是一个promise的值
  // 1、返回的是成功的promise  那么代表async函数返回的promise是成功的，成功的结果是return后面返回的promise成功的结果
  // 2、返回的是失败的promise  那么代表async函数返回的promise是失败的，失败的原因是return后面返回的promise失败的原因

  async addOrUpdateShopCart({ commit }, { skuId, skuNum }) {
    const result = await reqAddOrUpdateShopCart(skuId, skuNum)
    if (result.code === 200) {
      return 'ok'
    } else {
      return Promise.reject(new Error('failed'))
    }
  },

  async getShopCartList({ commit }) {
    const result = await reqShopCartList()
    if (result.code === 200) {
      commit('RECEIVE_SHOPCARTLIST', result.data)
    }
  },

  // 修改一个选中的状态
  // async UpdateOneIsChecked({commit},{skuId,isChecked}){
  //   const result = await reqUpdateOneIsChecked(skuId,isChecked)
  //   if(result.code === 200){
  //     return 'ok'
  //   }else{
  //     return Promise.reject(new Error('failed'))
  //   }
  // },
  //  修改选中一个的状态
  async UpdateOneIsChecked({ commit }, { skuId, isChecked }) {
    const result = await reqUpdateOneIsChecked(skuId, isChecked)
    if (result.code === 200) {
      return 'ok'
    } else {
      return Promise.reject(new Error('failed'))
    }
  },

  // 修改多个选中的状态
  // async UpdateAllIsChecked({commit},{isChecked,skuIds}){
  //   const result = await reqUpdateAllIsChecked(isChecked,skuIds)
  //   if(result.code === 200){
  //     return 'ok'
  //   }else{
  //     return Promise.reject(new Error('failed'))
  //   }
  // },

  //  修改多个选中的状态
  async UpdateAllIsChecked({ commit }, { isChecked, skuIds }) {
    const result = await reqUpdateAllIsChecked(isChecked, skuIds)
    if (result.code === 200) {
      return 'ok'
    } else {
      return Promise.reject(new Error('failed'))
    }
  },
  // 删除单个购物车

  // async deleteOneShopCart({commit},skuId){
  //   const result = await reqDeleteOneShopCart(skuId)
  //   if(result.code === 200){
  //     return 'ok'
  //   }else{
  //     return Promise.reject(new Error('failed'))
  //   }
  // },

  // 删除单个购物车
  async deleteOneShopCart({ commit }, skuId) {
    const result = await reqDeleteOneShopCart(skuId)
    if (result.code === 200) {
      return 'ok'
    } else {
      return Promise.reject(new Error('failed'))
    }
  },

  // 删除多个购物车
  // async deleteAllShopCart({commit},skuIds){
  //   const result = await reqDeleteAllShopCart(skuIds)
  //   if(result.code === 200){
  //     return 'ok'
  //   }else{
  //     return Promise.reject(new Error('failed'))
  //   }
  // },

  async deleteAllShopCart({ commit }, skuIds) {
    const result = await reqDeleteAllShopCart(skuIds)
    if (result.code === 200) {
      return 'ok'
    } else {
      return Promise.reject(new Error('failed'))
    }
  }



}
const getters = {}

export default {
  state,
  mutations,
  actions,
  getters
}